package com.whfc.ms.api.fse.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fse.dto.FseCraneDTO;
import com.whfc.fse.dto.FseCraneFvsDeviceDTO;
import com.whfc.fse.dto.FseCraneToolDTO;
import com.whfc.fse.param.*;
import com.whfc.fuum.entity.SysUser;

import java.util.List;

/**
 * @DESCRIPTION 塔机
 * @AUTHOR GuoDong_Sun
 * @DATE 2020/4/8
 */

public interface MsFseCraneService {
    /**
     * 塔机列表
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param keyword
     * @param bindFlag
     * @param netState
     * @return
     */
    PageData<FseCraneDTO> list(Integer pageNum, Integer pageSize, Integer deptId, String keyword, Integer bindFlag, Integer netState);

    /**
     * 添加塔机
     *
     * @param request
     */
    void add(FseCraneAddParam request);

    /**
     * 编辑塔机
     *
     * @param request
     */
    void edit(FseCraneEditParam request);

    /**
     * 删除塔机
     *
     * @param id
     */
    void del(Integer id);

    /**
     * 塔机绑定硬件
     *
     * @param request
     */
    void bind(FseCraneBindParam request);

    /**
     * 塔机解绑硬件
     *
     * @param craneId
     */
    void unbind(Integer craneId);

    /**
     * 塔机列表
     *
     * @param deptId
     * @param bindFlag
     * @return
     */
    ListData<FseCraneDTO> list(Integer deptId, Integer bindFlag);

    /**
     * 塔机详情
     *
     * @param craneId id
     * @return 详情
     */
    FseCraneDTO detail(Integer craneId);

    /**
     * 获取视频监控列表
     *
     * @param craneId 塔机ID
     * @return
     */
    List<FseCraneFvsDeviceDTO> fvsList(Integer craneId);

    /**
     * 塔机绑定监控设备
     *
     * @param request 请求参数
     */
    void bindFvs(FseCraneFvsParam request);

    /**
     * 吊索具列表
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<FseCraneToolDTO> getCraneToolList(Integer deptId, Integer pageNum, Integer pageSize);

    /**
     * 添加吊索具
     *
     * @param param
     */
    void addCraneTool(FseCraneToolAdd param);

    /**
     * 编辑吊索具
     *
     * @param param
     */
    void editCraneTool(FseCraneToolEdit param);

    /**
     * 删除吊索具
     *
     * @param toolId
     */
    void delCraneTool(Integer toolId);
}
